package co.gov.medellin.ssti.sub.model.dao.impl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;

import co.gov.medellin.ssti.sub.model.dao.IInterfazMELDAO;
import co.gov.medellin.ssti.sub.model.dao.exception.DAOException;
import co.gov.medellin.ssti.sub.model.vo.BeneficiarioVO;
import co.gov.medellin.ssti.sub.model.vo.InterfazMELVO;

public class InterfazMELDAOImpl extends BaseDAOImpl implements IInterfazMELDAO {

	public InterfazMELDAOImpl(Connection con) {
		super(con);
	}

	public Collection<InterfazMELVO> findCamposGenericos(BeneficiarioVO bene)
			throws DAOException {
		PreparedStatement pstmt = null;
		ResultSet rst = null;

		List<InterfazMELVO> campos = new LinkedList<InterfazMELVO>();
		List<Object> parameters = new ArrayList<Object>();
		StringBuffer query = new StringBuffer(
				"SELECT * FROM vcs_ben_mel_campos_basicos ");
		if (bene.getTipoDocumento() != null
				&& !bene.getTipoDocumento().equalsIgnoreCase("")
				&& bene.getNumeroDocumento() != null
				&& !bene.getNumeroDocumento().equalsIgnoreCase("")) {

			query.append(" WHERE numerodocumento = ? AND tipodocumento = ? ");
			parameters.add(bene.getNumeroDocumento());
			parameters.add(bene.getTipoDocumento());

			try {
				pstmt = conn.prepareStatement(query.toString());
				pstmt = setQueryParameters(pstmt, parameters);
				rst = pstmt.executeQuery();

				while (rst.next()) {
					InterfazMELVO campo = new InterfazMELVO();
					campo.setNumeroDocumento(rst.getString("NUMERODOCUMENTO"));
					campo.setTipoDocumento(rst.getString("TIPODOCUMENTO"));
					campo.setCedulaAcu(rst.getString("CEDACU"));
					campo.setCedulaMadre(rst.getString("CEDMADRE"));
					campo.setCedulaPadre(rst.getString("CEDPADRE"));
					campo.setDirInstitucion(rst.getString("DIR_INSTITUCION"));
					campo.setDirSede(rst.getString("DIRECCION_SEDE"));
					campo.setGrado(rst.getString("GRADO"));
					campo.setJornada(rst.getString("JORNADA"));
					campo.setMailInstitucion(rst.getString("EMAIL_INSTITUCION"));
					campo.setNomAcu(rst.getString("NOMACU"));
					campo.setNomInstitucion(rst.getString("nombre_institucion"));
					campo.setNomMadre(rst.getString("NOMMADRE"));
					campo.setNomPadre(rst.getString("NOMPADRE"));
					campo.setNomSede(rst.getString("nombre_sede"));
					campo.setTelAcu(rst.getString("AL_TELE_RESI_ACUD"));
					campo.setTelInstitucion(rst.getString("TELS_INSTITUCION"));
					campo.setTelMadre(rst.getString("TELMADRE"));
					campo.setTelPadre(rst.getString("TELPADRE"));
					campo.setTelSede(rst.getString("TELEFONO_SEDE"));
					campo.setNucleo(rst.getString("NUCLEO"));
					campo.setNivelSisben(rst.getString("AL_NIVE_SISB"));
					campo.setPuntajeSisben(rst.getString("AL_PUNT_SISB"));
					campos.add(campo);
				}
			} catch (SQLException e) {
				throw new DAOException(e);
			} finally {
				close(rst, pstmt);
			}
		}
		return campos;
	}

}
